home *** CD-ROM | disk | FTP | other *** search
/ Tricks of the Mac Game Programming Gurus / TricksOfTheMacGameProgrammingGurus.iso / More Source / C⁄C++ / Chess++ 3.0.1 / Chess++ 3.0.1.readme next >
Text File  |  1993-05-26  |  8KB  |  163 lines

  1. Chess++
  2. by Steve Bushell
  3. python@world.std.com
  4. ©1992-1993 Steve Bushell - all rights reserved.
  5.  
  6. REMEMBER:
  7. As you read this and examine the program, remember that I appreciate all feedback,
  8. be it critical or laudatory.  Send everything to python@world.std.com.  I'd love
  9. to hear what you think.  Thanks!
  10.  
  11. WHAT IS IT?
  12. Chess++ is a program written in Symantec C++/TCL 1.1.3 which, as you might
  13. guess, plays chess.  It was used as the demo project for the introduction of
  14. Symantec's new THINK Project Manager at the World Wide Developer's Conference (WWDC)
  15. in California in early May, 1993.  During that introduction, the project
  16. unexpectedly quit, but no one knows why, and noone can reproduce a crash on any
  17. machine.  If you can, let me know how you did it!
  18.  
  19. FEATURES:
  20. Chess++ does in fact play chess, offers different levels of play, and can be
  21. great if you're learning to play chess because if you option click on one of
  22. your chess pieces, the squares that you can move to will be highlighted.
  23. Chess++ will "think" in the background, and you can alter its degree of
  24. "multifinder friendliness".  Take a look at the options dialog and you'll see.
  25. The "Back propagation" option in the dialog is bogus.  Sorry.
  26. Chess++ can show you the current piece it's thinking about, and can optionally
  27. beep everytime it finds a better move to make against you.
  28. One other feature which has been in there since the very beginning of the Mac
  29. version is a "Tell Time" command.  Like it says, it tells the time, in my voice.
  30. It's a little cheezy, but I couldn't resist leaving it in there.
  31. The about box is kinda neat, and comes in three flavors, which are chosen at random.
  32.  
  33. LIMITATIONS:
  34. Chess++ is by no means the best chess program around - as a matter of fact, it's
  35. far from it.  There is no opening move library, the endgame is rather weak, you
  36. still cannot castle or capture en passant, and unless you play on the highest
  37. level, it can be pretty easy to beat.  This program is not here to be the best
  38. chess program around; it's here only as a demo program for you to look at and
  39. enjoy.  If you're not enjoying it, don't look at it!
  40.  
  41. PROGRAMMERS NOTES:
  42. Chess++ uses a very simple recursive algorithm for finding its next move (it's
  43. simple once you've written it).  Basically, after the real player makes a move,
  44. the "Brain" (as the virtual opponenet is known) examines every one of its pieces,
  45. and tries out every one of its possible legal moves.  The Brain then becomes its
  46. opponent (you) and tries to figure out what you will do for each one of its moves.
  47. If it wants, it can then try to figure what it would do based on what you did in
  48. response to it's move, and so on until it's recursed as far as it wants to go.
  49. All of this information is quantized based on board location and the value of
  50. captured pieces, and the move with the highest final value is the one the Brain
  51. finally makes.  The search depth is essentially the level of recursion in the
  52. Brain's thoughts, and so, obviously, the deeper the recursion, the better it
  53. plays.
  54.  
  55. In retrospect, I don't like a few things about the way I designed the program.
  56. I started changing a few of these things (which reduced my memory allocation needs
  57. dramatically) but there are still remnants of old code hanging around that may seem
  58. to have no purpose.  Keep in mind that all of the code is very much in a state
  59. of development, and many parts of it could be rewritten much more elegantly.
  60.  
  61. If I were to rewrite this whole program again, I'd change a lot of the data
  62. structures relating to the chess board and the pieces to make everything work
  63. faster.  Also, I'd rewrite a good part of the algorithms which check a move's
  64. legality in assembly to get more speed out of it.  There is a _lot_ of room
  65. for optimization in this program, but if you're serious about writing your own
  66. chess program, I'd suggest looking at Chess++, and then start from scratch.
  67.  
  68. There's much that can be done with this program as it is, starting with adding
  69. castling and capturing en passant.  This is all left as an exercise to the reader.
  70.  
  71. The about box has some really cool hacky code which exploits double-buffered GWorlds.
  72. Because of this, Color Quickdraw is required to run (but I don't do a check for it).
  73. A lot of the data in the about box code is hard-wired to the picture that is
  74. displayed, so it will be very difficult to modify without screwing it up.
  75. It also uses the rarely seen adMin transfer mode!  Enjoy - it was the best I
  76. could do in two hours.
  77.  
  78. Although it looks like you can save a chessboard, you really can't.  Don't bother
  79. trying it.  This feature wouldn't be too hard to add, though.
  80.  
  81. BY THE WAY:
  82. I don't work for Symantec anymore - I left there in March of 1993.
  83. Be sure to look for my name in the about boxes of the THINK Project Manager and
  84. THINK Reference 2.0!
  85.  
  86. LEGAL INFORMATION:
  87. This program, "Chess++", and/or its source code, may be freely distributed
  88. provided it is unaltered, and that proper credit is given to me, the author,
  89. Steve Bushell.  I retain all rights to the program and its source code, even if
  90. either one has been modified for any purpose.  This program has been placed in
  91. the public domain with the aforementioned exclusions for purposes of enjoyment
  92. and education only.  This program and/or its sources may not be sold at any cost
  93. (other than normal connection fees) nor modified and reposted, without the
  94. express permission of Steve Bushell.  And, of course, I take no responsibility
  95. whatsoever for anything that happens as a consequence of your looking at or
  96. using Chess++ and its source code.
  97.  
  98. VERSION HISTORY:
  99.  
  100. Chess++ 3.0.1 - 5/5/93
  101. ©1993 Steve Bushell
  102. python@world.std.com
  103.  
  104. Several features have been added to make the game more "official".
  105. - The program will not let you move into check.
  106. - When pieces are moved (both by the player and the computer),
  107.   there is more visual feedback on the board.
  108. - The program will tell you if it checkmates or stalemates you.
  109. - The program does not quit abruptly when it loses anymore.
  110.   Instead it keeps the board around until you close it, and it
  111.   doesn't let you move any more pieces until you create a new
  112.   board.  The same applies if the program wins or stalemates.
  113. - The default setting for "Show thoughts" is now off (so there is
  114.   not too much blinking while it thinks).
  115.  
  116. ...
  117.  
  118. Chess++ 3.0 : A C++ based revival of everyone's favorite, BBChess!
  119.  
  120. Numerous bugs have been fixed since the last versions.  The move
  121. lookup algorithm now works properly and is much faster.  Instead
  122. of allocating and deallocating 32 to the power of the search depth
  123. handles on each move, the algorithm now only allocates one handle.
  124. A splash screen has been added, and the About... box has been
  125. greatly enhanced (you'll just have to see it!)  The UI for dragging
  126. a piece has been slightly improved, and the app's icon has been
  127. redesigned to make Apple's Human Interface Group happy.
  128.  
  129. So why is this version 3.0?  Version 1.0 was created on a TI-99/4A
  130. home computer when I was in 8th grade.  It filled up all 16k of the
  131. computer's memory.  Version 2.0 was created on a 286 pc in Turbo C.
  132. It didn't get very far, so was given a quick and proper burial.
  133. And version 3.0 is the first Mac release, and is also the first
  134. version which actually checkmates me once in a while.  Version 4.0
  135. will be compiled and run on the PowerPC.
  136.  
  137. Enjoy.
  138.  
  139. - Steve
  140. 4/27/93
  141. python@world.std.com
  142.  
  143. ...
  144.  
  145. Chess
  146. The TCL Project
  147.  
  148. The source was undergoing major modifications in the move-lookup
  149. algorithms when I stopped working on it, so the project as it is
  150. now doesn't work.  It is here as sample code showing how to use
  151. various parts of the TCL.  To see the program actually working,
  152. look at the already-built versions in this folder.
  153.  
  154. BBChess 3.0d4 is probably the latest and best "official" version.
  155. Everything that I broke later works in this version.
  156.  
  157. FloatingPointChess is the same as BBChess 3.0d4, but the About...
  158. box is much more interesting.
  159.  
  160. Later dudes,
  161.  
  162. - Steve
  163. 3/9/93